package listbyorder.access001_100.test50;

/**
 * @author code_yc
 * @version 1.0
 * @date 2020/6/1 11:12
 */
public class Solution1 {
    // 实现 pow(x, n) ，即计算 x 的 n 次幂函数。
    // 分成几种情况进行讨论
    // 1 当x == 1的时候，无论n为什么，结果都是1.0
    // 2 当x == -1的时候， 如果n是偶数，那么结果是1， 如果n是奇数， 则结果为-1
    // 3 当n > 0 的时候，结果就是不停的累乘
    // 4 当n < 0 的时候，计算处结果之后取反
    public double myPow(double x, int n) {
        if (x == -1) {
            if ((n & 1) != 0) {
                return -1;
            } else {
                return 1;
            }
        }
        if (x == 1.0) {
            return 1;
        }
        if (n == Integer.MIN_VALUE) {
            return 0;
        }
        double mul = 1;
        if (n > 0) {
            for (int i = 0; i < n; i++) {
                mul *= x;
            }
            return mul;
        }
        if (n < 0) {
            n = -n;
            for (int i = 0; i < n; i++) {
                mul *= x;
            }
            return 1 / mul;
        }
        return mul;
    }
}
